<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>

<body>
    <div id="box"></div>
    <div id="box1"></div>
    <script type="text/javascript" src="./js/react.development.js"></script>
    <!-- 提供了操作DOM的react扩展库 -->
    <script type="text/javascript" src="./js/react-dom.development.js"></script>
    <!-- 解析jsx语法的代码转换为js语法 -->
    <script type="text/javascript" src="./js/babel.min.js"></script>
    <script type="text/babel">
        /* 
       组件的三大属性：state props refs

       state :react中很多地方都需要数据 在react中叫做状态 专门用来管理状态的对象 state
       作用：
       ①存储状态（数据）
       ② 通过更改组件的state来更新对应的页面的显示（重新渲染）
       操作state 初始化状态 读取状态 更新状态 this.setState()

       
        */
        class Component1 extends React.Component {
            constructor(props){
                super(props);
                // 初始化状态
                this.state = {
                    name:'zhangdong',
                    age:18
                }
                // 此处的this是组件对象
                this.change = this.change.bind(this);
            }
            change(){
                // 更改状态
                console.log('111');
                console.log(this);//undefind 不希望此处的this为undefined，希望它是组件,通过bind去改变this执行
                this.setState({
                    name:'张水水'
                })
            }
            render() {
                return (
                    <div>
                        {/* 读取状态 */}
                        <h1>{this.state.name}</h1>
                        <h1>class类写的第一个组件</h1>
                        <input type="text"/>
                        {/* 需要绑定一个点击事件 */}
                        <button onClick={this.change}>更改状态</button>
                    </div>
                )
            }
        }
      
        ReactDOM.render(<Component1/>,document.getElementById('box'));

       

    </script>
</body>

</html>